/**
 * 工具函数
 * @author xiaoqiang <465633678@qq.com>
 * @created 2018/11/01 16:51:54
 */
const path = require('path')
const fs = require('fs')
const fileType = require('./fileType')

/**
 * 获取文件类型
 * @param {String} url url
 * @returns {String} 返回配置的文件类型
 */
function getType(url) {
  const extName = path.extname(url)
  const type = (extName && extName.slice(1)) || 'unknow'
  return fileType[type]
}

/**
 * 获取指定目录的内容
 * @param {String} currentPath 资源路径
 * @returns {String} 返回一个html字符串
 */
function getDir(currentPath, url) {
  // 同步读取目录
  const dir = fs.readdirSync(currentPath)
  /**
   * dom结构
   */
  let dom = `
    <html>
      <head></head>
      <body>
       <ul>
  `
  /**
   * 判断目录是否为空
   */
  if (dir.length) {
    // 循环目录数组
    dir.forEach(v => {
      dom += `<li><a href="${url === '/' ? '': url}/${v}">${v}</a></li>`
    })
  } else {
    dom += '<div>该目录为空</div>'
  }
  dom += `
      </ul>
    </body>
  </html>
  `
  return dom
}

/**
 * 获取文件二进制数据
 * @param {String} currentPath 当前路径
 */
function getFile(currentPath) {
  /**
   * 获取文件数据
   * 类型为二进制
   */
  const content = fs.readFileSync(currentPath, 'binary')
  return content
}

// 导出模块
module.exports = {
  getType,
  getDir,
  getFile
}